﻿using PersistenceLayer.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PersistenceLayer.DAL
{
	public class Produto_EspecificacaoDAL
	{
		private Entities Entity;

		public Produto_EspecificacaoDAL()
		{
			Entity = new Entities();
		}

		public Int64 Adicionar(Produto_Especificacao pe)
		{
			Entity.Produto_Especificacao.Add(pe);
			Entity.SaveChanges();
			return pe.ID;
		}

		public void Atualizar(Produto_Especificacao pe)
		{
			var old = Entity.Produto_Especificacao.Where(a => a.ID == pe.ID).Single();
			Entity.Entry(old).CurrentValues.SetValues(pe);
			Entity.SaveChanges();
		}
		public void AtivarDesativar(int peID)
		{
			var old = Entity.Produto_Especificacao.Where(a => a.ID == peID).Single();
			old.Ativo = !old.Ativo;
			Entity.SaveChanges();
		}
		public void Deletar(Produto_Especificacao pe)
		{
			Entity.Produto_Especificacao.Add(pe);
			Entity.SaveChanges();
		}

		public Produto_Especificacao Obter(Int64 ID)
		{
			return Entity.Produto_Especificacao.Where(a => a.ID == ID).SingleOrDefault();
		}
		public Produto_Especificacao ObterPorTamanhoCor(Int64 prodID, string tamanho, string cor)
		{
			return Entity.Produto_Especificacao.Where(a => a.Produto_ID == prodID && a.Tamanho == tamanho && a.Cor == cor).SingleOrDefault();
		}
		public Produto_Especificacao ObterPorCodigo(string codigo)
		{
			return Entity.Produto_Especificacao.Where(a => a.CodigoLoja == codigo).SingleOrDefault();
		}

		public List<Produto_Especificacao> ListarPorTamanho(Int64 prodID, string tamanho)
		{
			return Entity.Produto_Especificacao.Where(a => a.Produto_ID == prodID && a.Tamanho == tamanho).ToList();
		}
		public List<Produto_Especificacao> ListarPorProduto(Int64 prodID)
		{
			return Entity.Produto_Especificacao.Where(a => a.Produto_ID == prodID).ToList();
		}

		public bool ExisteCodigo(string codigo)
		{
			return Entity.Produto_Especificacao.Count(a => a.CodigoLoja == codigo) > 0;
		}
		public bool ExisteEspecificacao(string cor, string tamanho, long eID)
		{
			return Entity.Produto_Especificacao.Count(a => a.Cor == cor && a.Tamanho == tamanho && a.ID == eID) > 0;
		}

	}
}
